void InitList(DLinkNode *&L){
	L=new DLinkNode;
	L->next=NULL;
	L->prior=NULL;
} 
void DestroyList(DLinkNode *&L){
	DLinkNode *p;
	while(L){
		p=L;
		L=L->next;
		delete p;
	}
}
void DispList(DLinkNode *L){
	DLinkNode *p;
	for(p=L->next;p!=NULL;p=p->next){
		printf("%c ",p->data);
	}
	printf("\n");
}
bool ListInsert(DLinkNode *&L,int i,ElemType e){
	DLinkNode *q=L,*p;
	int flag=0;
	while(q!=NULL&&flag<i-1){
		q=q->next;
		flag++;
	}
	if(q==NULL||flag!=i-1) return 0;
	else {
	p=new DLinkNode;
	p->data=e;
	p->next=q->next;
	p->prior=q;
	q->next=p;
	}
}
int Symm(DLinkNode *L){
	DLinkNode *p=L->next,*q=L->next;
	int flag=0;
	if(L->next==NULL) return -1;
	while(p->next!=NULL){
		p=p->next;
	}
	while(q!=p&&p->next!=q){
		if(q->data!=p->data){
			flag=1;
			break;
		}
		else{
			p=p->prior;
			q=q->next;
		}
	}
	if(flag==0) return 1;
	else return 0;
} 
